import { Page, PipelineStageError } from "corvos"; import { strapiLoader } from "$/deps/strapi.tsx"; import { releaseStrapiSchema } from "$/schemas/releases.ts"; import { BaseLayout } from "$/ui/base/BaseLayout.tsx"; import { SplitLayout } from "$/ui/base/SplitLayout.tsx"; import { ReleaseCard } from "$/ui/components/ReleaseCard.tsx"; import { SiteHeader } from "$/ui/components/SiteHeader.tsx"; import { CardList } from "$/ui/layouts/CardList.tsx"; import { Container } from "$/ui/layouts/Container.tsx"; import { HList } from "$/ui/layouts/HList.tsx"; import { ActionButton } from "$/ui/objects/ActionButton.tsx"; import { Badge } from "$/ui/objects/Badge.tsx"; import { Body } from "$/ui/objects/Body.tsx"; import { Button } from "$/ui/objects/Button.tsx"; import { Card } from "$/ui/objects/Card.tsx"; import { CardBody } from "$/ui/objects/CardBody.tsx"; import { Divider } from "$/ui/objects/Divider.tsx"; import { Heading } from "$/ui/objects/Heading.tsx"; import { Icon } from "$/ui/objects/Icon.tsx"; import site from "@/corvos.config.ts"; export const pages = site.$.pageGenerator(async function* () { for await (const item of strapiLoader.loadCollection("corvos-releases", releaseStrapiSchema, { "populate[0]": "files", "sort[0]": "date:desc", })) { if (item instanceof PipelineStageError) { yield item; continue; } yield new Page(".strapi", item.notes ?? [], { ...item, title: `Corvos ${item.version}`, type: "release" as const, }); } }); export const template = site.$.template({ type: "release" }, (page, pages) => { const query = site.$.query(pages); const feed = query.type(".rss").match({ type: "releases" }).one(); return ( Release notes {{ __html: page.content }} } header-end={
} level="quiet" pill title="RSS Feed" />
} >
{page.data.title}
); });